<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="utf-8" />
        <title>PythonTutorials</title>
        <link rel="stylesheet" href="/theme/css/main.css" />

        <!--[if IE]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
</head>

<body id="index" class="home">
        <header id="banner" class="body">
                <h1><a href="/">PythonTutorials </a></h1>
                <nav><ul>
                    <li><a href="/category/cpp.html">cpp</a></li>
                    <li><a href="/category/python.html">python</a></li>
                </ul>
                </nav>
        </header><!-- /#banner -->

                <section id="content" class="body">
                    <ol id="posts-list" class="hfeed" start="2">
            <li><article class="hentry">
                <header>
                    <h1><a href="/Part.2.D.4-recursion.html" rel="bookmark"
                           title="Permalink to Part.2.D.4-recursion">Part.2.D.4-recursion</a></h1>
                </header>

                <div class="entry-content">
<footer class="post-info">
        <span>Mon 06 April 2020</span>
<span>| tags: <a href="/tag/python.html">python</a><a href="/tag/progarmming.html">progarmming</a><a href="/tag/excel.html">Excel</a></span>
</footer><!-- /.post-info -->                <h1>递归函数</h1>
<h2>递归（Recursion）</h2>
<p>在函数中有个理解门槛比较高的概念：<strong>递归函数</strong>（Recursive Functions）—— 那些<strong>在自身内部调用自身的函数</strong>。说起来都比较拗口。</p>
<p>先看一个例子，我们想要有个能够计算 <code>n</code> 的<em>阶乘</em>（factorial）<code>n!</code> 的函数，<code>f()</code>，规则如下：</p>
<blockquote>
<ul>
<li><code>n! = n × (n-1) × (n-2)... × 1</code></li>
<li>即，<code>n! = n × (n-1)!</code></li>
<li>且，<code>n &gt;= 1</code></li>
</ul>
<p><strong>注意</strong>：以上是数学表达，不是程序，所以，<code>=</code> 在这一小段中是 “<em>等于</em>” 的意思，<strong>不是程序语言中的赋值符号</strong>。</p>
</blockquote>
<p>于是，计算 <code>f(n)</code> 的 Python 程序如下：</p>
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">n …</span></pre></div>
                <a class="readmore" href="/Part.2.D.4-recursion.html">read more</a>
                </div><!-- /.entry-content -->
            </article></li>

            <li><article class="hentry">
                <header>
                    <h1><a href="/Part.2.D.5-docstrings.html" rel="bookmark"
                           title="Permalink to Part.2.D.5-docstrings">Part.2.D.5-docstrings</a></h1>
                </header>

                <div class="entry-content">
<footer class="post-info">
        <span>Mon 06 April 2020</span>
<span>| tags: <a href="/tag/python.html">python</a><a href="/tag/progarmming.html">progarmming</a><a href="/tag/excel.html">Excel</a></span>
</footer><!-- /.post-info -->                <h1>函数的文档</h1>
<p>你在调用函数的时候，你像是函数这个产品的用户。</p>
<p>而你写一个函数，像是做一个产品，这个产品将来可能会被很多用户使用 —— 包括你自己。</p>
<p>产品，就应该有产品说明书，别人用得着，你自己也用得着 —— 很久之后的你，很可能把当初的各种来龙去脉忘得一干二净，所以也同样需要产品说明书，别看那产品曾经是你自己设计的。</p>
<p>Python 在这方面很用功，把函数的 “产品说明书” 当作语言内部的功能，这也是为什么 Python 有 <a href="http://www.sphinx-doc.org">Sphinx</a> 这种工具，而绝大多数其他语言没有的原因之一罢。</p>
<h2>Docstring</h2>
<p>在函数定义内部，我们可以加上 <strong>Docstring</strong>；将来函数的 “用户” 就可以通过 <code>help()</code> 这个内建函数，或者 <code>.__doc__</code> 这个 Method 去查看这个 Docstring，即，该函数的 “产品说明书”。</p>
<p>先看一个 Docstring 以及如何查看某个函数的 Docstring 的例子：</p>
<div class="highlight"><pre><span></span><span class="k">def …</span></pre></div>
                <a class="readmore" href="/Part.2.D.5-docstrings.html">read more</a>
                </div><!-- /.entry-content -->
            </article></li>

            <li><article class="hentry">
                <header>
                    <h1><a href="/Part.2.D.6-modules.html" rel="bookmark"
                           title="Permalink to Part.2.D.6-modules">Part.2.D.6-modules</a></h1>
                </header>

                <div class="entry-content">
<footer class="post-info">
        <span>Mon 06 April 2020</span>
<span>| tags: <a href="/tag/python.html">python</a><a href="/tag/progarmming.html">progarmming</a><a href="/tag/excel.html">Excel</a></span>
</footer><!-- /.post-info -->                <h1>保存到文件的函数</h1>
<p>写好的函数，当然最好保存起来，以便将来随时调用。</p>
<h2>模块</h2>
<p>我们可以将以下内容保存到一个名为 <code>mycode.py</code> 的文件中 —— 这样可以被外部调用的 <code>.py</code> 文件，有个专门的称呼，<strong>模块</strong>（Module）—— 于是，它（任何一个 <code>.py</code> 文件）也可以被称为<em>模块</em>：</p>
<div class="highlight"><pre><span></span><span class="c1"># %load mycode.py</span>
<span class="c1"># 当前这个 Code Cell 中的代码，保存在当前文件夹中的 mycode.py 文件中</span>
<span class="c1"># 以下的代码，是使用 Jupyter 命令 %load mycode.py 导入到当前 Code Cell 中的：</span>

<span class="k">def</span> <span class="nf">is_prime</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Return a boolean …</span></pre></div>
                <a class="readmore" href="/Part.2.D.6-modules.html">read more</a>
                </div><!-- /.entry-content -->
            </article></li>
            </ol><!-- /#posts-list -->
<p class="paginator">
        <a href="/index7.html">&laquo;</a>
    Page 8 / 22
        <a href="/index9.html">&raquo;</a>
</p>
            </section><!-- /#content -->
        <section id="extras" class="body">
                <div class="blogroll">
                        <h2>blogroll</h2>
                        <ul>
                            <li><a href="http://getpelican.com/">Pelican</a></li>
                            <li><a href="http://python.org/">Python.org</a></li>
                            <li><a href="http://jinja.pocoo.org/">Jinja2</a></li>
                            <li><a href="#">You can modify those links in your config file</a></li>
                        </ul>
                </div><!-- /.blogroll -->
                <div class="social">
                        <h2>social</h2>
                        <ul>

                            <li><a href="#">You can add links in your config file</a></li>
                            <li><a href="#">Another social link</a></li>
                        </ul>
                </div><!-- /.social -->
        </section><!-- /#extras -->

        <footer id="contentinfo" class="body">
                <p>Powered by <a href="http://www.maxiaoan.com/">Maxiaoan</a></p>
        </footer><!-- /#contentinfo -->

</body>
</html>